package pe.com.hermes.hermetic.web.controller.reportes;

import pe.com.hermes.hermetic.beans.AuditBean;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;
import pe.com.hermes.hermetic.negocio.ultil.Util;
import pe.com.hermes.hermetic.web.controller.base.IController;

import pe.com.hermes.hermetic.web.controller.base.IWebOpciones;
import pe.com.hermes.hermetic.web.forms.HMF4001Form;
import pe.com.hermes.hermetic.web.forms.HMF4007Form;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

@Controller
@RequestMapping("/mostrarHWF4007.html")
@SessionAttributes(value={"form","codOpci","desOpci"})
public class ActaAnomaliaController implements IController{
    protected final static Logger logger = Logger.getLogger(ActaAnomaliaController.class);
    @Autowired
    private HermeticFacade servicioHermetic;
    
    @RequestMapping(method={RequestMethod.GET})    
    protected String showForm(ModelMap model,HttpServletRequest request)throws Exception{
        if (request.getSession().getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;
        /**** Modificado 20090116 JCR *****/
        HttpSession session = request.getSession(false);
        //valido si el perfil logeado tiene acceso a la opcion
        List listaTransacciones = (List)session.getAttribute("listaMenu3");
        if (!Util.validaAccesoOpcion(listaTransacciones, ConstantesHermetic.REPORTE_ACTAS_ANOMALIA)) {
            return FORM_ACCESS_NULL_VIEW;
        }
        String cliente = (String)request.getSession().getAttribute("cliente");
        String sucursal = (String)request.getSession().getAttribute("sucursal");
        HMF4007Form form = new HMF4007Form();
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        List listadoTipoAnomalias = new ArrayList();
        try{
            listadoTipoAnomalias = servicioHermetic.getTiposAnomalias();
            String fecha = servicioHermetic.getFechaHoy();   
            form.setFechadesde(fecha);
            form.setFechahasta(fecha);  
            form.setCliente(cliente);
            form.setSucursal(sucursal);
            AuditBean auditBean = new AuditBean(ACTA_ANOM);
            servicioHermetic.inseAudit(auditBean);
        }catch(Exception e){
            listadoTipoAnomalias = new ArrayList();
        }
        String codOpci = IWebOpciones.ACTA_ANOM;
        String desOpci = servicioHermetic.getDesOpci(codOpci, request);
        model.put("codOpci",codOpci);
        model.put("desOpci",desOpci);
        model.put(FORM_KEY,form);
        model.put("listadoTipoAnomalias",listadoTipoAnomalias);
        return FORM_ACTA_ANOM;
    }
    @RequestMapping(params={"accion=verExcel"})    
    protected String verExcel(ModelMap model,@ModelAttribute(FORM_KEY) HMF4007Form form,HttpServletRequest request,HttpServletResponse response)throws Exception{
        if (request.getSession().getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;
        /**** Modificado 20090116 JCR *****/
        HttpSession session = request.getSession(false);
        //valido si el perfil logeado tiene acceso a la opcion
        List listaTransacciones = (List)session.getAttribute("listaMenu3");
        if (!Util.validaAccesoOpcion(listaTransacciones, ConstantesHermetic.REPORTE_ACTAS_ANOMALIA)) {
            return FORM_ACCESS_NULL_VIEW;
        }
        String cliente = (String)request.getSession().getAttribute("cliente");
        String sucursal = (String)request.getSession().getAttribute("sucursal");        
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        List listaActasAnomalia = new ArrayList();
        String desSucursal;
        try{
            listaActasAnomalia = servicioHermetic.getActasAnomalia(sucursal, form.getFechadesde(),form.getFechahasta(), cliente);
            desSucursal= servicioHermetic.getDescripcionSucursal(sucursal);
            form.setCliente(cliente);
            form.setSucursal(sucursal);
        }catch(Exception e){
            listaActasAnomalia = new ArrayList();
            desSucursal="";
        }
        model.put(FORM_KEY,form);
        model.put("listaActasAnomalia",listaActasAnomalia);
        model.put("dsucu",desSucursal);
        model.put("fechadesde",form.getFechadesde());
        model.put("fechahasta",form.getFechahasta());
        response.addHeader("Content-type", "application/vnd.ms-excel");
        response.addHeader("Content-Disposition", "attachment; filename=actaAnomalia.xls");
        response.setContentType("Content-type: application/vnd.ms-excel");
        
        response.setHeader("Cache-Control","cache"); // HTTP 1.1
        response.setHeader("Pragma","cache"); // HTTP 1.0
        response.setDateHeader ("Expires", -1);  
        return FORM_ACTA_ANOM_REPO;
    }
}
